package com.ruoyi.system.mapper;

import com.ruoyi.common.core.domain.entity.SysArea;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 行政区划管理 数据层
 * 
 * @author ruoyi
 */
public interface SysAreaMapper
{
    /**
     * 查询行政区划管理数据
     * 
     * @param area 行政区划信息
     * @return 行政区划信息集合
     */
    public List<SysArea> selectAreaList(SysArea area);

    /**
     * 根据行政区划ID查询信息
     * 
     * @param areaCode 行政区划ID
     * @return 行政区划信息
     */
    public SysArea selectAreaByCode(String areaCode);

    /**
     * 根据ID查询所有子行政区划
     * 
     * @param areaCode 行政区划ID
     * @return 行政区划列表
     */
    public List<SysArea> selectChildrenAreaByCode(String areaCode);

    /**
     * 是否存在子节点
     * 
     * @param areaCode 行政区划ID
     * @return 结果
     */
    public int hasChildByAreaCode(String areaCode);

    /**
     * 校验行政区划名称是否唯一
     * 
     * @param areaName 行政区划名称
     * @return 结果
     */
    public SysArea checkAreaNameUnique(@Param("areaName") String areaName);

    /**
     * 新增行政区划信息
     * 
     * @param area 行政区划信息
     * @return 结果
     */
    public int insertArea(SysArea area);

    /**
     * 修改行政区划信息
     * 
     * @param area 行政区划信息
     * @return 结果
     */
    public int updateArea(SysArea area);

    /**
     * 修改子元素关系
     * 
     * @param areas 子元素
     * @return 结果
     */
    public int updateAreaChildren(@Param("areas") List<SysArea> areas);

    /**
     * 删除行政区划管理信息
     * 
     * @param areaCode 行政区划ID
     * @return 结果
     */
    public int deleteAreaByCode(String areaCode);

}
